from win32com.client import Dispatch
import os


class WC:
    def __init__(self):
        try:
            self.dm = Dispatch('dm.dmsoft')  # 调用大漠插件
            print('插件加载成功')
        except:
            os.system('regsvr32 lib/wc.dll /s')
            print('动态库注册成功')
            self.dm = Dispatch('dm.dmsoft')  # 调用大漠插件
            print('插件加载成功')
        reged = self.dm.RegEx("qq760471367f21b0879268408e5096b92cb022804da", "vvv0000", "58.218.204.170")
        print("插件注册:%s", reged)

        # 这个是防止NP检测
        shield = self.dm.DmGuard(1, "np")
        print("NP盾:%s", shield)

        # 这个保护内存系列接口和汇编接口可以正常运行.
        shield = self.dm.DmGuard(1, "memory")
        print("memory盾:%s", shield)

        # 这个保护内存系列接口和汇编接口可以正常运行
        shield = self.dm.DmGuard(1, "memory2")
        print("memory2盾:%s", shield)
        #
        # shield=self.dm.DmGuard(1, "display2")
        # print("display2盾:%s", shield)
        # ★"block [pid]" : 保护指定进程不被非法访问. pid为可选参数.如果不指定pid，默认保护当前进程,另种实现方式
        shield = self.dm.DmGuard(1, "block")
        print("block盾:%s", shield)

        # 把当前进程伪装成pid指定的进程，可以保护进程路径无法被获取到.如果省略pid参数，则伪装成svchost.exe进程
        shield = self.dm.DmGuard(1, "f1")
        print("f1盾:%s", shield)

        # 防止当前进程中的指定模块被非法访问
        shield = self.dm.DmGuard(1, "hm wc.dll 1")
        print("hm盾:%s", shield)

        # 隐藏指定进程中的句柄,无法用正常手段获取到
        shield = self.dm.DmGuard(1, "h1")
        print("h1盾:%s", shield)

        shield = self.dm.DmGuard(1, "inject 2 1044 <lib\wc.dll> <1 1 1 0>")
        print("注入:%s", shield)
